package cliente;


public class Proceso implements Runnable {
	public final boolean PARADO = false;
	public final boolean CORRIENDO = true;
	public final int ERROR = -1;
	public int id;
	boolean estado;
	Proceso coordinador;

	public Proceso() {

	}

	public void run() {
		double timeout = 0;
		int valor = 0;
		while(estado == CORRIENDO){
			while(timeout > 1 || timeout < 0.5 )
				timeout = Math.random();
			try {
				Thread.sleep((long) timeout*1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			valor = coordinador.computar();
			if(valor == ERROR)
				eleccion();
		}
	}
	
	public int computar(){
		if(estado == PARADO){
			return ERROR;
		}
		try {
			Thread.sleep(200);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return 1;
	}

	public void ok() {

	}

	public void eleccion() {
//		for(int i=0;Servicio.procesos.size();i++){
//
//		}
	}

	public void coordinador(Proceso coordinador) {
		this.coordinador = coordinador;
	}

	public void parar() {
		estado = PARADO;
	}

	public void arrancar() {
		estado = CORRIENDO;
	}
}
